<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>箭头函数</title>
</head>
<body>
    <script>
        // ES6 允许使用「箭头」
        //1. 声明格式 
        // let fn = (a, b, c) => {
        //     console.log('我是一个函数哦~~~');
        //     let res = a + b + c;
        //     return res;
        // }
        
        //2. 函数调用
        // let res = fn(1, 20, 500);
        // console.log(res);
        // console.log(fn.call(null, 20, 30, 50));
        // console.log(fn.apply(null, [20, 30, 60]));
       
        // 箭头函数特点 
        // 1. 指向外层作用域下 this 的值, 
        // let fn = () => {
        //     console.log(this);
        // }
        // fn.call({test: '测试'});
        // fn.apply({test: '测试'});

        // function A(){
        //     this.name = '对象';
        //     let b = () => {
        //         console.log(this);
        //     }
        //     b();
        // }
        // // A();
        // new A();

        // 2. 不能作为构造函数使用
        // function Person(){}
        // let Person = function(){}
        // let Person = () => {}// 这个箭头函数不能实例化对象
        // let me = new Person();
        // console.log(me);

        // 3. 不能使用 arguments   针对不定个数参数的时候  add(1, 2)  add(1,2,3,6)  splice
        // function fn(){
        //     console.log(arguments);
        // }
        // fn(9,7,5,1);

        // let fn = () => {
        //     console.log(arguments);
        // }
        // fn(1,2,3,4,5);

        // 4. 箭头函数简写  *
        // 一 不写小括号, 当形参有且只有一个的时候
        // let pow = num => {
        //     return num * num;
        // }
        // console.log(pow(10));
        // 二 不写花括号, 当代码体只有一条语句的时候, 并且语句的执行结果为函数返回值的 (如果不写花括号的话, return 也不能写)
        // let pow = num => num * num; 
        // console.log(pow(17));

        let test = num => num;
        console.log(test(100))
    </script>
</body>
</html>